<?php
/**
* Controlador que maneja las acciones del sistema
*/
class SiteController extends Controller
{
	/**
	 * Accion por defecto index
	 */
	public function actionIndex()
	{
		$cuenta=Yii::app()->user->getId();
		$this->render('inicio',array('cuenta'=>$cuenta));
	}
	/**
	 * Esta es la acción que maneja las excepciones externas .
	 */
	public function actionError()
	{
		if($error=Yii::app()->errorHandler->error)
		{
			if(Yii::app()->request->isAjaxRequest)
				echo $error['message'];
			else
				$this->render('error', $error);
		}
	}
	
	public function actionPedido()
	{
		
		$this->render('/pedido/pedido');
	}
	
	/**
	*Accion relacionada a la asignacion de pedido 
	*/
	public function actionAsignacion(){
		$sistema=$this->AccesoSistema();
		$model=new AsignacionForm;
		$model->lista_especialidades=$sistema->get_especialidades();
		$model->nro_sucursal=$sistema->get_idsucursal();
		//verifica si se agregaron datos en los campos del formulario
		if(isset($_POST['AsignacionForm'])) {
		    $model->attributes=$_POST['AsignacionForm'];
			if($model->validate()){		
				  //Envia los datos a la accion mostrarnombre(cambiar por confirmar)
				$especialidad=$model->especialidad_seleccionada();
				if($sistema->buscar_usuario($model->nro_usuario,'nro_usuario')){
					$sistema->nuevoPedido($model->fecha,$model->hora,$especialidad,$model->prioridad,$model->nro_sucursal);
					if($sistema->get_empleados_disponibles()!=null){
						foreach($sistema->get_empleados_disponibles() as $empleado){
								$model->agregarEmpleado($empleado->get_nro_empleado().'. '.$empleado->get_nombre_empleado().' '.$empleado->get_apellido_empleado().'   ');
						}
						 $this->renderPartial('/pedido/confirmacion',array('model'=>$model));
					}
					else{
						Dialogo::mensaje('Mensaje', 'No se encontraron empleados disponibles para esa fecha');
					}
				}
			}
		}
		if(isset($_POST['confirmacion'])){ //si se ha elegido empleado
				if(isset($_POST['empleado'])){
					$lista=$sistema->get_empleados_disponibles();
					$empleado_numero=$_POST['empleado'];
					$detalle=$_POST['detalle'];
					$numero_pedido=$sistema->confirmarNuevoPedido($empleado_numero,$detalle);
					Dialogo::mensaje('Mensaje Confirmacion', '<b>Pedido N°:</b> '.$numero_pedido);
					$this->redirect($this->createUrl('pedido'));
				}
				
		}
		$this->render('/pedido/asignacion',array('model'=>$model));
	}
	
	/*
	*Accion que permite eliminar pedido
	*/
	public function actionEliminarpedido(){
		$sistema=$this->AccesoSistema();
		$model=new AsignacionForm;
		if(isset($_POST['buscar'])){
	      if(isset($_POST['valor']) and !$_POST['valor']==''){
			  $resultadobusqueda=$sistema->eliminarPedido($_POST['valor'],$_POST['tipo'],$_POST['fecha'],$_POST['hora']);
			  if($resultadobusqueda){
				  $pedido=$sistema->get_pedido();
				  $model->hora=$pedido->get_hora_pedido();
				  $model->fecha=$pedido->get_fecha_pedido();
				  $model->prioridad=$pedido->get_prioridad_pedido();
				  $model->nro_usuario=$pedido->get_nro_usuario();
				  $model->detalle=$pedido->get_detalles();
				  $model->nro_sucursal=$pedido->get_sucursal();
			   }
			   else{
				//mensaje error pedido no encontrado en la base de datos
			      Dialogo::mensaje('Busqueda', 'Pedido no encontrado');		
				}
		   }
		}
		if(isset($_POST['eliminar'])){
			$detalle_eliminacion=$_POST['detalle'];
			$resultadoeliminar=$sistema->confirmarEliminarPedido($detalle_eliminacion);
			Dialogo::mensaje('Mensaje Confirmacion', 'Pedido cancelado ');
			$this->redirect($this->createUrl('pedido'));
		}
			
	    $this->render('/pedido/eliminarpedido',array('model'=>$model));
	}
	
	
	/*
	*Accion que permite modificar pedido
	*/
	public function actionModificarpedido(){
		$sistema=$this->AccesoSistema();
		$model=new ModificarAsignacionForm;
		if(isset($_POST['buscar'])){
	      if(isset($_POST['valor']) and !$_POST['valor']==''){
			   $resultadobusqueda=$sistema->modificarPedido($_POST['valor'],$_POST['tipo'],$_POST['fecha'],$_POST['hora']);
			   if($resultadobusqueda){
				   $pedido=$sistema->get_pedido();
				   $model->hora=$pedido->get_hora_pedido();
				   $model->fecha=$pedido->get_fecha_pedido();
				   $model->nro_usuario=$pedido->get_nro_usuario();
				   $model->detalle=$pedido->get_detalles();
				   $empleado=$sistema->get_empleado();
				   $model->especialidad=$empleado->get_especialidad_empleado();
				   $model->nro_sucursal=$pedido->get_sucursal();
				   $model->lista_especialidades=$sistema->get_especialidades();
				}
				else{
			      Dialogo::mensaje('Busqueda', 'Pedido no encontrado');		
				}
			}
		}
		if(isset($_POST['modificar'])){
	       $model->attributes=$_POST['ModificarAsignacionForm'];
				if($model->validate()){
					$sistema->set_cambios($model->fecha,$model->hora,$model->especialidad,$model->detalle,$model->prioridad,$model->nro_sucursal);
					if($sistema->get_empleados_disponibles()!=null){
						foreach($sistema->get_empleados_disponibles() as $empleado){
								$model->agregarEmpleado($empleado->get_nro_empleado().'. '.$empleado->get_nombre_empleado().' '.$empleado->get_apellido_empleado());
						}
						$this->renderPartial('/pedido/confirmacioncambio',array('model'=>$model));		 
					}
					else{
						Dialogo::mensaje('Mensaje', 'No se encontraron empleados disponibles para esa fecha');
					}
				}
		}
		if(isset($_POST['empleado'])){
			$empleado_numero=$_POST['empleado'];
			$detalle=$_POST['detalle'];
			$numero=$sistema->confirmarModificarPedido($empleado_numero,$detalle);
			Dialogo::mensaje('Mensaje Confirmacion', 'Pedido Modificado, nuevo N° Pedido: '.$numero);
			$this->redirect($this->createUrl('pedido'));
		}
		$this->render('/pedido/modificarpedido',array('model'=>$model));
	}
	
	 /*
	*Accion que permite mostrar datos del user Pc
	*/	
   public function actionMisdatos(){
		 $sistema=$this->AccesoSistema();
		 $sistema->buscar_UserPc(Yii::app()->user->getId(),'mail');
		 $user=$sistema->get_userPc();
		 $model=new User_pcForm;
		 $model->nro_userpc=$user->get_nro_userPc();
		 $model->nombre=$user->get_nombre_userPc();
		 $model->apellido=$user->get_apellido_userPc();
		 $model->dni=$user->get_dni_userPc();
		 $model->mail=$user->get_mail_userPc();
		 $model->rol=$user->get_rol_userPc();
		 if(isset($_POST['modificar'])){
		    $sistema->modificarUserPc(Yii::app()->user->getIdUser(),'nro_userPc');
			$this->redirect($this->createUrl('modificardatos'));
		}
		$this->render('misdatos',array('model'=>$model));
   }
   
   public function actionModificarDatos(){
	     $sistema=$this->AccesoSistema();
		 $user=$sistema->get_userPc();
		 $model=new ModificarUserpcForm;
		 if(isset($_POST['modificar'])){
				$model->attributes=$_POST['ModificarUserpcForm'];
				if($model->validate()){
				    $user=$sistema->get_userPc();
					$Resultadomodificar=$sistema->set_cambios_userPc($model->nombre, $model->apellido, $model->dni, $model->mail, $model->contrasena,$model->rol);
					if($Resultadomodificar){
						$model->unsetAttributes();
						Dialogo::mensaje('Mensaje', 'Datos  guardados correctamente');	
					}
					$this->redirect($this->createUrl('misdatos'));
				}
		}
		 $model->nro_userpc=$user->get_nro_userPc();
		 $model->nombre=$user->get_nombre_userPc();
		 $model->apellido=$user->get_apellido_userPc();
		 $model->dni=$user->get_dni_userPc();
		 $model->mail=$user->get_mail_userPc();
		 $model->rol=$user->get_rol_userPc();
		 $model->contrasena=$user->get_password_userPc();
		 $this->render('modificardatos',array('model'=>$model));
   
   }
   
   	/*
	*Accion que permite busqueda 
	*/
   public function actionBusqueda(){
   
		$this->render('busqueda');
   }
    
	/*
	*Filtro que permite controlar el acceso de usuarios
	*/
	public function filters()
    {
        return array(
            'accessControl',
        );
    }
		
	/*
	*Reglas de Acceso que deniegan o permiten ciertas acciones
	*/
   public function accessRules()
   {
		return array(
		array('allow',  // permite a los administradores registrados acceder a las acciones
		'actions'=>array('index','inicio','pedido','asignacion','eliminarpedido','modificarpedido','login','recuperacion','misdatos','busqueda','pedido','modificardatos'),
		'roles'=>array('admin','empleado'),
		),
		array('allow',
		'actions'=>array('error','loginempleado'),
		'users'=>array('*'),
		),
		array('deny',//deniego toda accion a usuario no autenticado
		'users'=>array('*'),
		),
		);
   }
}
?>